This guide outlines the steps to install Trilium on your own server. You might consider this option if you want to set up synchronization or use Trilium in a browser - accessible from anywhere.
There are several ways to install Trilium on a server, each with its own advantages:
The server installation includes both web and mobile frontends.
After setting up your server installation, you may want to configure settings
such as the port or enable TLS. Configuration
is managed via the Trilium config.ini file,
which is located in the data directory by
default. To begin customizing your setup, copy the provided config-sample.ini file
with default values to config.ini.
You can also review the configuration file
to provide all config.ini values as environment
variables instead.
By default, config.ini, the database,
and other important Trilium data files are stored in the data directory.
If you prefer a different location, you can change it by setting the
TRILIUM_DATA_DIRenvironment variable:
export TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data
If you're running into the 250MB limit imposed on the server by default,
and you'd like to increase the upload limit, you can set the TRILIUM_NO_UPLOAD_LIMIT environment
variable to true to disable it completely:
export TRILIUM_NO_UPLOAD_LIMIT=true
Or, if you'd simply like to increase the upload limit size to something
beyond 250MB, you can set the MAX_ALLOWED_FILE_SIZE_MB environment
variable to something larger than the integer 250 (e.g.
450in the following example):
export MAX_ALLOWED_FILE_SIZE_MB=450
See Authentication.
To configure a reverse proxy for Trilium, you can use either nginx or Apache. You can also check out the documentation stored in the Reverse proxy folder.
Add the following configuration to your nginx setup
to proxy requests to Trilium:
location /trilium/ {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
To avoid limiting the size of payloads, include this in the server {} block:
# Set to 0 for unlimited. Default is 1M.
client_max_body_size 0;
For an Apache setup, refer to the Apache proxy setup guide.